﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//int main()
//{
//		int i = 0;
//		//循环产⽣100~200的数字
//		for (i = 100; i <= 200; i++)
//		{
//			//判断i是否为素数
//			//循环产⽣2~i-1之间的数字
//			int j = 0;
//			int flag = 1;//假设i是素数
//			for (j = 2; j < i; j++)
//			{
//				if (i % j == 0)
//				{
//					flag = 0;
//					break;
//				}
//			}
//			if (flag == 1)
//				printf("%d ", i);
//		}
//		return 0;
//		printf("\ncount = %d\n", count);
//	}


//#include <math.h>
////sqrt 是一个库函数 计算平方根 需要头文件 <math.h>
//
//int main()
//{
//	int i = 0;
//	int count = 0;
//	for (i = 101; i <= 200; i += 2)
//	{
//		int flag = 1;//假设i是素数
//		//printf("%d ", i);
//		//每一次循环进来都会产生一个数字
//		//判断i是否是素数
//		//产生2~i-1之间的数字去试除i
//		int j = 0;
//		for (j = 2; j <= sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		//
//		if (flag == 1)
//		{
//			count++;
//			printf("%d ", i);
//		}
//	}
//	printf("\ncount = %d\n", count);
//	return 0;
//}

 // goto 语句和跳转标号， goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
//goto 语句如果使⽤的不当，就会导致在函数内部随意乱跳转，打乱程序的执⾏流程
//在多层循环的代码中，如果想快速跳出使⽤ goto 就⾮常的⽅便了
//int main()
//{
//	printf("hehe\n");
//	if (1)
//		goto end;//从这
//
//	printf("haha\n");
//
//end://跳到这
//	printf("end\n");
//
//	return 0;
//}

//关机程序
//1. 程序运行起来的时候，就开始倒计时60秒关机
//2. 但是如果你能输入：我是猪，就取消关机
//


//两个字符串比较相等的时候 不是使用==
//应该使用 strcmp  要包含#include <string.h> 
//#include <stdlib.h> 
//#include <string.h> 
//int main()
//{
//	char input[20];
//	system("shutdown -s -t 60");//system -- 库函数，可以执行系统命令 //要使用头文件 #include <stdlib.h>
//again:
//	printf("请注意，你电脑一分钟内关机，输入我是猪,取消关机");
//	scanf("%s", input);
//	if (strcmp("我是猪", input) == 0)//strcmp 返回值是0 括号内相等
//		system("shutdown -a");
//	else
//		goto again;
//	return 0;
//}

//设置随机数的生成起点（种子）
//int main()
//{
//	//设置随机数的生成起点（种子）
//	srand((unsigned int)time(NULL));
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d\n", rand()%100+1);
//	}
//	return 0;
//}



/*设置随机数的范围
如果我们要⽣成0~99之间的随机数，⽅法如下：
rand() % 100;//余数的范围是0~99
如果要⽣成1~100之间的随机数，⽅法如下：
rand() % 100 + 1;   //%100的余数是0~99,0~99的数字+1,范围是1~100
如果要⽣成100~200的随机数，⽅法如下：
100 + rand() % (200 - 100 + 1)
//余数的范围是0~100，加100后就是100~200
所以如果要⽣成a~b的随机数，⽅法如下：
a + rand()%(b-a+1)
*/
//程序中在调⽤ rand 函数之前先调⽤ srand 函数，通过 srand 函数的参数seed来设置rand函数⽣成随
//机数的时候的种⼦，只要种⼦在变化，每次⽣成的随机数序列也就变化起来了。

//玩游戏
/*
#include <stdlib.h> 
#include <time.h> 
void game()
{
	//游戏的逻辑 
	//1.生成随机数
	int r = rand() % 100 + 1;//rand，这函数是可以⽣成随机数的 
	//2.猜数字
	int guess = 0;
	int count = 5;
	while (count)
	{
		printf("还有%d次机会\n",count);
		printf("请猜数字：");
		scanf("%d", &guess);
		if (guess > r)
		{
			printf("猜大了\n");
		}
		else if (guess < r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("用完所有机会，游戏over,正确的值是：%d\n",r);
	}
}
void menu()
{
	printf("***************************\n");
	printf("********** 1.play *********\n");
	printf("********** 0.exit *********\n");
	printf("***************************\n");

}


int main()
{
	int input = 0;
	//设计随机数生成起点
	//整个工程中调用一次就够 不要放在循环里面
	srand((unsigned int)time(NULL));//NULL表示空值   srand⽤来初始化随机数的⽣成器的  需要包含头⽂件 #include <stdlib.h>   time 函数会返回当前的⽇历时间 需要包含头⽂件：time.h
	//如果 timer 是NULL，就只返回这个时间的差值。time函数返回的这个时间差也被叫做：时间戳。
	do
	{
		//打印菜单
		menu();
		//选择
		printf("请选择：");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//玩游戏的逻辑
			game();
			printf("猜数字游戏\n");
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误，重新选择\n");
			break;
		}
	}while(input);
	return 0;
}*/


/* 数组的概念
  数组是⼀组相同类型元素的集合；从这个概念中我们就可以发现2个有价值的信息：
• 数组中存放的是1个或者多个数据，但是数组元素个数不能为0。
• 数组中存放的多个数据，类型是相同的。
数组分为⼀维数组和多维数组，多维数组⼀般⽐较多⻅的是⼆维数组。
*/


//int main()
//{
	//一维数组的创建
	//int math[20];//数组有20个元素，每个元素的类型是int
	//char ch[5];
	//double arr[6];

	//创建和初始化
//	int math[20] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
//	int math2[20] = { 0,1,2,3,4,5 };//不完全初始化，剩下的元素默认初始化为0
//
//	char ch[5] = {'a', 'b'};
//	char ch2[5] = "abc";
//
//	double arr[6] = {0.0};
//	int arr2[3] = { 1,2,3};
//
//
//	return 0;
//}
//int main()
//{
//	int a = 10;
//	char ch = 'w';
//	double d = 0.0;
//
//	int arr[10] = {0};
//	//数组有没有类型
//	//数组的类型是什么？
//	//数组的元素类型是int
//	//数组的类型 - int[10]
//
//	int arr2[5];//int [5]
//
//	return 0;
//}



//使用一维数组
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//当对数组进行初始化的时候，数组的大小[]可以省略。编译器会根据数组的初始化内容，自动计算数组的元素个数
//	//10 是指定数组的元素个数的
//
//	printf("%d\n", arr[5]);//[] -- 下标引用操作符
//	//            这里的5是数组元素的下标
//
//	printf("%d\n", arr[9]);
//
////	//给数组中输入10个值
//	for (i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);//数组元素需要取地址 数组名不需要  arr[]是数组名   arr[i]是数组元素
//	}
//
//	//打印数组的内容
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//一维数组在内存中的存储
//%d - 整型
//%c - 字符
//%s - 字符串
//%p - 地址
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//0~9地址
//	//打印这10个元素的地址
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("&arr[%d] = %p\n", i,  &arr[i]);//&-取地址操作符-取出变量在内存中的地址
//	}
//
//	return 0;
//}


//sizeof可以计算类型长度
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%zd\n", sizeof(arr));//40 一个整型是4个字节 十个数就是40个字节 
//	int sz = sizeof(arr) / sizeof(arr[0]);//可以计算出元素个数  arr数组里面有40个字节/数组中第一个数，也是4个字节 就可以得出 这个数组有10个元素
//	printf("%d\n", sz);
//	//int a = 0;
//	//printf("%zd\n", sizeof(a));//单位是字节
//	//printf("%zd\n", sizeof(int));
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
//
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}
//
int main() {
	int a, b, c;
	while (scanf("%d %d %d", &a, &b, &c) != EOF) { // 注意 while 处理多个 case
		// 64 位输出请用 printf("%lld") to 
		if ((a == b) && (b == c) && (a == c))
			printf("%s\n", "Equilateral triangle!");
		else if ((a == c) && (a != b) && (c != b))
			printf("%s\n", "Isosceles triangle!");
		else if ((a + b > c) && (a + c > b) && (b + c > a))
			printf("%s\n", "Ordinary triangle!");
		else 
			printf("%s\n", "Not a triangle!");
	}
	return 0;
}